package kr.co.bettersoft.waitnumberstoret.activity;

import kr.co.bettersoft.waitnumberstoret.common.CommonConstant;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;

public class PaymentForm extends Activity{
	///////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 변수
	String TAG = "PaymentForm";

	public static Activity paymentForm;
	
	// 폰트
	private Typeface typefaceNanumGothic= null; 
	private Typeface typefaceNanumGothicBold = null;

	SharedPreferences sharedPrefCustom;	// 공용 프립스
	String merchantId;			// 가맹점 아이디
	String merchantName;		// 가맹점 명
	
	// 화면 구성
	TextView titleBar;		// 타이틀

	EditText payment_bettersoft_name;	// 업체 - 더난 - 수정불가
	EditText payment_store_id;			// 가맹점 아이디 - 수정불가 . 자동설정
	EditText payment_store_name;		// 가맹점명  - 수정 불가 . 자동설정
	EditText payment_service_name;		// 서비스명 - 마이턴 대기등록 - 수정불가
	EditText payment_payment_amount;	// 결재금액 . 수정 불가. 보여지는 값. 자동설정
	String 	 payment_payment_amount_hidden = CommonConstant.paymentAmtForOneYear;	// 결재금액. 실제 사용되는 값.

	RadioGroup payment_product_name;	//		payment_product_radio1	// 상품명 - 1년 /2년
	RadioGroup payment_payment_method;	//	payment_payment_method_radio1	// 결재 방법 - 카드/모바일

	RadioButton payment_product_radio1, payment_product_radio2;				// 1년, 2년
	RadioButton payment_payment_method_radio1, payment_payment_method_radio2;	// 카드 , 모바일

	// 하단 버튼
	Button confirm_btn,  cancel_btn;		// 확인, 취소 버튼



	//	CheckBox checkBoxTerms; // 이용약관 동의 체크
	//	CheckBox checkBoxPrivacyTerms; // 개인정보 동의 체크
	//	Button seeTermsBtn; 	// 이용약관 보기 버튼
	//	Button seePrivacyTermsBtn; 	// 개인정보방침 보기 버튼
	//	Button userConfirmBtn; 	//다음(인증)화면으로 이동하기 버튼

	///////////////////////////////////////////////////////////////////////////////////////////////////////////

	// 핸들러
	Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			Bundle b = msg.getData();
			try{
				if(b.getInt("showErrToast")==1){
					Toast.makeText(PaymentForm.this,b.getString("msg"), Toast.LENGTH_SHORT).show();
				}
				if(b.getInt("showAlert")==1){					 // 경고창 . 
					//
					new AlertDialog.Builder(returnThis())
					.setTitle(CommonConstant.alertTitle)							
					.setMessage(b.getString("msg"))
					.setIcon(R.drawable.ic_dialog_img)		 
					.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialog, int whichButton) {
							// 그냥 사용자 확인 용이기 때문에 추가 조작 없음.
						}})
						.setNegativeButton("", null).show();
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	};

	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature( Window.FEATURE_NO_TITLE );
		setContentView(R.layout.payment_form);

		paymentForm = PaymentForm.this;
		
		// 프립
		sharedPrefCustom = getSharedPreferences(CommonConstant.prefName,
				Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
		merchantId = sharedPrefCustom.getString("merchantId", "");
		merchantName = sharedPrefCustom.getString("merchantName", "");			
		
		// 타이틀 바
		titleBar = (TextView) findViewById(R.id.title_bar);
		// 입력 창
		payment_bettersoft_name = (EditText) findViewById(R.id.payment_bettersoft_name);
		
		payment_store_id = (EditText) findViewById(R.id.payment_store_id);
		payment_store_id.setText(merchantId);
		payment_store_name = (EditText) findViewById(R.id.payment_store_name);
		payment_store_name.setText(merchantName);	
		payment_service_name = (EditText) findViewById(R.id.payment_service_name);
		payment_payment_amount = (EditText) findViewById(R.id.payment_payment_amount);
		// 라디오 버튼, 그룹
		payment_product_name = (RadioGroup) findViewById(R.id.payment_product_name);
		payment_payment_method = (RadioGroup) findViewById(R.id.payment_payment_method);
		payment_product_radio1 = (RadioButton) findViewById(R.id.payment_product_radio1);
		payment_product_radio2 = (RadioButton) findViewById(R.id.payment_product_radio2);
		payment_payment_method_radio1 = (RadioButton) findViewById(R.id.payment_payment_method_radio1);
		payment_payment_method_radio2 = (RadioButton) findViewById(R.id.payment_payment_method_radio2);
		// 하단 확인, 취소 버튼
		confirm_btn = (Button) findViewById(R.id.confirm_btn);
		cancel_btn = (Button) findViewById(R.id.cancel_btn);

		// 폰트 지정.
		typefaceNanumGothic = Typeface.createFromAsset(getAssets(), CommonConstant.NanumGothic);  
		typefaceNanumGothicBold = Typeface.createFromAsset(getAssets(), CommonConstant.NanumGothicBold);
		// 폰트 적용
		titleBar.setTypeface(typefaceNanumGothic);		

		// 상품 선택시 금액 변경
		payment_product_name.setOnCheckedChangeListener(new OnCheckedChangeListener() 
		{
			public void onCheckedChanged(RadioGroup group, int checkedId) 
			{
				// TODO Auto-generated method stub
				if(payment_product_radio1.isChecked())
				{
					payment_payment_amount.setText(CommonConstant.paymentAmtForOneYearText);
					payment_payment_amount_hidden = CommonConstant.paymentAmtForOneYear;
				}
				else if(payment_product_radio2.isChecked())
				{
					payment_payment_amount.setText(CommonConstant.paymentAmtForTwoYearText);
					payment_payment_amount_hidden =  CommonConstant.paymentAmtForTwoYear;		
				}
			}
		});

		confirm_btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 인텐트 - 웹뷰
				Intent webIntent = new Intent(PaymentForm.this, MyWebViewActivity.class);
				webIntent.putExtra("loadingURL", CommonConstant.paymentRequestURL);	// 결제 주소 보낼것	
				if(payment_payment_method_radio1.isChecked()){
					webIntent.putExtra("pgcode", "1");	// 신용카드
				}else{
					webIntent.putExtra("pgcode", "2");	// 다날 모바일 결제	 
				}
				webIntent.putExtra("clientid", "bettersoft");	//페이레터에서 부여한 아이디
				webIntent.putExtra("clientname", getString(R.string.payment_form_bettersoft));	//고객사에서 표시할 고객사명
				webIntent.putExtra("userid", payment_store_id.getText()+"");	// 가맹점 아이디
				webIntent.putExtra("ordnm", payment_store_name.getText()+"");	// 가맹점 명
				webIntent.putExtra("svcnm", payment_service_name.getText()+"");	// 서비스 명
//				webIntent.putExtra("amt", payment_payment_amount.getText()+"");	// 결제 금액
				webIntent.putExtra("amt", payment_payment_amount_hidden);	// 결제 금액

				if(payment_product_radio1.isChecked()){
					webIntent.putExtra("ordno", "4001");	// 주문번호
					webIntent.putExtra("pname", payment_product_radio1.getTag()+"");	// 상품명
				}else{
					webIntent.putExtra("ordno", "4002");	// 주문번호
					webIntent.putExtra("pname", payment_product_radio2.getTag()+"");	// 상품명
				}
				webIntent.putExtra("etcparam", "");	// 기타 파라미터 "" 
				webIntent.putExtra("returnurl", CommonConstant.paymentResultURL);	// 결과 보여줄 페이지 
				webIntent.putExtra("notiurl",  CommonConstant.paymentNotiURL);		// 결과 처리할 페이지 
				webIntent.putExtra("backurl",  CommonConstant.paymentBackURL);		// 결과 닫기 페이지 
 

				//				request.getParameter("pgcode");  // 2 : 다날 모바일 결제,  // 1 ? 신용카드 결제     payment_product_name
				//		objPLParam.SetParam("clientid", request.getParameter("clientid")); //페이레터에서 부여한 아이디  bettersoft
				//	    objPLParam.SetParam("clientname", request.getParameter("clientname")); //고객사에서 표시할 고객사명   더난소프트
				//	    objPLParam.SetParam("userid", request.getParameter("userid"));				// car  payment_store_id
				//	    objPLParam.SetParam("ordnm", request.getParameter("ordnm"));				// 홍길동 payment_store_name
				//	    objPLParam.SetParam("svcnm", request.getParameter("svcnm"));				// 마이턴 대기등록 서비스  payment_service_name
				//	    objPLParam.SetParam("amt", request.getParameter("amt"));			// 결제 금액 64680 /  116420    payment_payment_amount
				//	    objPLParam.SetParam("ordno", request.getParameter("ordno"));		// 주문번호 4001 / 4002  
				//	    objPLParam.SetParam("pname", request.getParameter("pname"));			// 상품명 1년 약정 , 2년 약정  payment_product_name
				//	    objPLParam.SetParam("etcparam", request.getParameter("etcparam"));		// 기타 파라미터 "" 
				//	 // 결과를 받아서 복호화하고 처리할 업체쪽 URL입니다.
				//	    objPLParam.SetParam("returnurl", request.getParameter("returnurl"));		// 결과 받을 페이지 http://192.168.10.120:8080/GetMobilePayParamResult.jsp
				//
				//	    //"돌아가기" 버튼 클릭시 돌아갈 페이지. 만약 오픈창이어서 돌아갈 페이지가 없을꺼라면 적지않으셔도됩니다. 주석처리 요망
				//	    objPLParam.SetParam("backurl", request.getParameter("backurl"));		// 닫으려면 "" 
				startActivity(webIntent);
			}
		});
		cancel_btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				finish();
			}
		});
	}

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	

	public Context returnThis(){
		return this;
	}

	/**
	 * showResultDialog
	 * 얼럿을 띄운다
	 *
	 * @param msg
	 * @param 
	 * @return 
	 */
	public void showResultDialog(final String msg){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("showAlert", 1);
						b.putString("msg", msg);			// 화면에 보여줄 메시지
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}

}